package com.demo.controller;

import com.demo.domain.CtUser;
import com.demo.domain.Dto;
import com.demo.domain.dto.UserDto;
import com.demo.domain.utils.DtoUtil;
import com.demo.service.impl.Service;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("ctUser")
public class CtController {

    @Autowired
    private Service service;

    @PostMapping("selectAll")
    public List<CtUser> selectAll(){
        return service.selectAll();
    }
    @PostMapping("insertAll")
    public Integer insertAll(@RequestBody CtUser ctUser){
        return service.insertAll(ctUser);
    }

    @GetMapping("delUser/{id}")
    public Integer delUser(@PathVariable("id")Integer id){
        return service.delUser(id);
    }
    @PostMapping("selectOne/{name}")
    public List<CtUser> selectOne(@PathVariable("name") String name){
        return service.selectOne(name);
    }

    @PostMapping("login")//
    public CtUser login(@RequestBody(required=false) UserDto dto) throws NullPointerException {
        if (dto.getMobile() == null && dto.getMobile().equals("")) {
            System.out.println("手机号空");
            return null;
        }
        if (dto.getPassword() == null && dto.getPassword().equals("")) {
            System.out.println("密码空");
            return null;
        }
        CtUser user = service.login(dto.getMobile(), dto.getPassword());
        if (user == null) {
            System.err.println("用户或密码错误");
            return null;
        } else {
            user.setToken("200");
            return user;
        }
    }

    @PostMapping("code")

    // @PostMapping("login")
    // public UserDto login(@RequestBody(required=false)CtUser dto) throws NullPointerException {
    //     if(dto.getMobile() == null && dto.getMobile().equals("")){
    //         System.out.println("手机号空");
    //         return null;
    //     }
    //     if(dto.getPassword() == null && dto.getPassword().equals("")){
    //         System.out.println("密码空");
    //         return null;
    //     }
    //     UserDto userDto = service.login(dto.getMobile(),dto.getPassword());
    //     userDto.setToken("200");
    //     return userDto;
    // }
    // @PostMapping("login")
    // public Dto login2(@RequestBody(required=false)CtUser ctUser) {
    //     if (ctUser.getMobile() == null || ctUser.getMobile().equals("")) {
    //         System.out.println("401异常1");
    //         return DtoUtil.returnError(401, "权限异常");
    //     }
    //     // CtUser ctUser = service.login(mobile, password);
    //     if (ctUser == null) {
    //         System.out.println("401异常2");
    //         return DtoUtil.returnError(401, "还是权限异常");
    //     }
    //     return DtoUtil.returnSuccessData(ctUser);
    // }
    // }
    // @PostMapping("login")
    // public DtoUtil login(@RequestBody(required=false)DtoUtil dto) {
    //     CtUser user =service.login(dto.getMobile(),dto.getPassword());
    //     user.setToken("aaaaa");
    //     return user;
    // }
// @PostMapping("login")
// public Dto login1(CtUser ctUser) {
//     if (ctUser.getMobile() == null || ctUser.getMobile().equals("")) {
//         System.out.println("401异常1");
//         return DtoUtil.returnError(401, "权限异常");
//     }
//     // CtUser ctUser = service.login(mobile, password);
//     if (ctUser == null) {
//         System.out.println("401异常2");
//         return DtoUtil.returnError(401, "还是权限异常");
//     }
//     return DtoUtil.returnSuccessData(ctUser);
// }

    @RequestMapping("controller")
    Dto controller(){
        return DtoUtil.returnError(401,"401错误");
    }
    @GetMapping("register")//
    String register(@Param( "mobile" ) String mobile, @Param("password" ) String password) {
        if (service.insertUser(mobile, password) == null) {
            System.out.println("失败");
            return "";
        } else {
            System.out.println("成功");
            return "成功";
        }
    }
    @GetMapping("changePassword")
    public Integer update(String mobile,String password){
        return service.update(mobile, password);
    }
}
